package Demo02;

/**
 * @ClassName StaticTest
 * @Description static修饰的属性和方法
 * @Author 李明忠
 * @Date 2025/5/28 15:20
 * @Version 1.0
 */
public class StaticTest {
    int age;
    String name;
    //static修饰的属性
    public static String  className = "118期java";

    public StaticTest() {
    }

    public StaticTest(int age, String name) {
        this.age = age;
        this.name = name;
    }

    @Override
    public String toString() {
        return "StaticTest{" +
                "age=" + age +
                ", name='" + name + '\'' +
                '}';
    }

    //static修饰的方法
    /*
    * static修饰的方法里面没有this指针
    * 静态方法不可以直接调用实例方法/属性
    * 但是可以通过创建对象来调用实例方法/属性
    * */
    public static void fun() {
        System.out.println("静态方法1");
        //静态方法不可以直接调用实例方法
//        fun1();//编译报错
//        this.age;//编译报错

        //静态方法通过使用对象间接调用实例方法
        StaticTest staticTest = new StaticTest();
        staticTest.fun2();
    }

    public static void fun1() {
        System.out.println("静态方法2");
    }

    /*
    * 实例方法既可以直接调用静态方法/属性
    * 也可以直接调用实例方法/属性
    * */
    public void fun2() {
        System.out.println("实例方法");
        fun1();
    }
}
